<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Crystal (programming language)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Crystal_(programming_language)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Crystal_programming_language rootpage-Crystal_programming_language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Crystal (programming language)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">Crystal</th></tr><tr><td colspan="2" class="infobox-image"><span typeof="mw:File"></span></td></tr><tr><th scope="row" class="infobox-label"><a href="Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="Multi-paradigm_programming_language" class="mw-redirect" title="Multi-paradigm programming language">Multi-paradigm</a>: <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented</a>, <a href="Concurrent_computing" title="Concurrent computing">concurrent</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_design" title="Software design">Designed by</a></th><td class="infobox-data">Ary Borenszweig, Juan Wajnerman, Brian Cardiff</td></tr><tr><th scope="row" class="infobox-label"><a href="Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser">Manas Technology Solutions</td></tr><tr><th scope="row" class="infobox-label">First appeared</th><td class="infobox-data">June 19, 2014<span style="display:none"> (<span class="bday dtstart published updated">2014-06-19</span>)</span><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></td></tr><tr><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">1.16.3<sup id="cite_ref-wikidata-074292ab12fcdf6fa455f20ca57a14e6a4b89731-v20_2-0" class="reference"><a href="#cite_note-wikidata-074292ab12fcdf6fa455f20ca57a14e6a4b89731-v20-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
/ 12 May 2025<span style="display:none"> (<span class="bday dtstart published updated">12 May 2025</span>)</span></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label"><a href="Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="Type_system#Static_type_checking" title="Type system">static</a>, <a href="Type_system#Inferred_type_checking" title="Type system">inferred</a>, <a href="Nominal_type_system" title="Nominal type system">nominal</a>, <a href="Duck_typing" title="Duck typing">duck</a></td></tr><tr><th scope="row" class="infobox-label">Implementation language</th><td class="infobox-data">Crystal</td></tr><tr><th scope="row" class="infobox-label"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="IA-32" title="IA-32">IA-32</a> (i386), <a href="X86-64" title="X86-64">x86-64</a>, <a href="AArch64" title="AArch64">AArch64</a><sup id="cite_ref-platform-support_3-0" class="reference"><a href="#cite_note-platform-support-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></td></tr><tr><th scope="row" class="infobox-label"><a href="Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="Linux" title="Linux">Linux</a>, <a href="MacOS" title="MacOS">macOS</a>, <a href="FreeBSD" title="FreeBSD">FreeBSD</a>, <a href="OpenBSD" title="OpenBSD">OpenBSD</a>, <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a><sup id="cite_ref-platform-support_3-1" class="reference"><a href="#cite_note-platform-support-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="Apache_License_2.0" class="mw-redirect" title="Apache License 2.0">Apache License 2.0</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Filename_extension" title="Filename extension">Filename extensions</a></th><td class="infobox-data">.cr</td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://crystal-lang.org">crystal-lang<wbr>.org</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="Go_(programming_language)" title="Go (programming language)">Go</a><sup id="cite_ref-go_multithread_4-0" class="reference"><a href="#cite_note-go_multithread-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></td></tr></tbody></table>
<p><b>Crystal</b> is a <a href="High-level_programming_language" title="High-level programming language">high-level</a> <a href="General-purpose_programming_language" title="General-purpose programming language">general-purpose</a>, <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> language, designed and developed by Ary Borenszweig, Juan Wajnerman, Brian Cardiff and more than 400 contributors.<sup id="cite_ref-contributors_5-0" class="reference"><a href="#cite_note-contributors-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> With syntax inspired by the language <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>,<sup id="cite_ref-rel_0.18.0_6-0" class="reference"><a href="#cite_note-rel_0.18.0-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> it is a <a href="Compiled_language" title="Compiled language">compiled language</a> with <a href="Type_system#Static_type_checking" title="Type system">static type-checking</a>, but specifying the types of variables or method arguments is generally unneeded. Types are resolved by an advanced global <a href="Type_inference" title="Type inference">type inference</a> algorithm.<sup id="cite_ref-type-inference-i_7-0" class="reference"><a href="#cite_note-type-inference-i-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-devm_8-0" class="reference"><a href="#cite_note-devm-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Crystal
is currently in active development. It is released as <a href="Free_and_open-source_software" title="Free and open-source software">free and open-source software</a> under the <a href="Apache_License" title="Apache License">Apache License</a> version 2.0.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>Work on the language began in June 2011,<sup id="cite_ref-story_9-0" class="reference"><a href="#cite_note-story-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> with the aim of merging the elegance and productivity of Ruby with the speed, efficiency, and type safety of a compiled language.<sup id="cite_ref-why_crystal_10-0" class="reference"><a href="#cite_note-why_crystal-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-story_9-1" class="reference"><a href="#cite_note-story-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> Initially named <i>Joy</i>, it was quickly renamed to <i>Crystal</i>.<sup id="cite_ref-story_9-2" class="reference"><a href="#cite_note-story-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p><p>The Crystal compiler was first written in Ruby, but later rewritten in Crystal, thus becoming <a href="Self-hosting_(compilers)" title="Self-hosting (compilers)">self-hosting</a>, as of November 2013.<sup id="cite_ref-goodbye_ruby_11-0" class="reference"><a href="#cite_note-goodbye_ruby-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> The first official version was released in June 2014.<sup id="cite_ref-rel_0.1.0_12-0" class="reference"><a href="#cite_note-rel_0.1.0-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> In July 2016, Crystal joined the <a href="TIOBE_index" title="TIOBE index">TIOBE index</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Description">Description</h2></div>
<p>Although resembling the Ruby language in syntax, Crystal compiles to much more efficient native code using an <a href="LLVM" title="LLVM">LLVM</a> backend, at the cost of precluding the dynamic aspects of Ruby. The advanced global type inference used by the Crystal compiler, combined with <a href="Union_type" title="Union type">union types</a>, gives it more the feel of a higher-level scripting language than many other comparable programming languages. It has automated garbage collection and offers a <a href="Boehm_garbage_collector" title="Boehm garbage collector">Boehm collector</a>. Crystal possesses a macro system and supports generics as well as method and operator overloading. Its concurrency model is inspired by <a href="Communicating_sequential_processes" title="Communicating sequential processes">communicating sequential processes</a> (CSP) and implements lightweight fibers and channels (for interfiber communication), inspired by <a href="Go_(programming_language)" title="Go (programming language)">Go</a>.<sup id="cite_ref-go_multithread_4-1" class="reference"><a href="#cite_note-go_multithread-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Hello_World">Hello World</h3></div>
<p>This is the simplest way to write the <a href="%22Hello%2C_World!%22_program" title=""Hello, World!" program">Hello World</a> program in Crystal:
</p>
<div class="mw-highlight mw-highlight-lang-crystal mw-content-ltr" dir="ltr"><pre><span class="nb">puts</span><span class="w"> </span><span class="s2">"Hello World!"</span>
</pre></div>
<p>The same as in Ruby.
</p><p>Or using an <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> style:
</p>
<div class="mw-highlight mw-highlight-lang-crystal mw-content-ltr" dir="ltr"><pre><span class="k">class</span><span class="w"> </span><span class="nc">Greeter</span>
<span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">initialize</span><span class="p">(</span><span class="vi">@name</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">String</span><span class="p">)</span>
<span class="w"> </span><span class="k">end</span>
<span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">salute</span>
<span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="s2">"Hello </span><span class="si">#{</span><span class="vi">@name</span><span class="si">}</span><span class="s2">!"</span>
<span class="w"> </span><span class="k">end</span>
<span class="k">end</span>
<span class="n">g</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Greeter</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s2">"world"</span><span class="p">)</span>
<span class="n">g</span><span class="o">.</span><span class="n">salute</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="HTTP_server">HTTP server</h3></div>
<div class="mw-highlight mw-highlight-lang-crystal mw-content-ltr" dir="ltr"><pre><span class="k">require</span><span class="w"> </span><span class="s2">"http/server"</span>
<span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HTTP</span><span class="o">::</span><span class="n">Server</span><span class="o">.</span><span class="n">new</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">context</span><span class="o">|</span>
<span class="w"> </span><span class="n">context</span><span class="o">.</span><span class="n">response</span><span class="o">.</span><span class="n">content_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"text/plain"</span>
<span class="w"> </span><span class="n">context</span><span class="o">.</span><span class="n">response</span><span class="o">.</span><span class="n">print</span><span class="w"> </span><span class="s2">"Hello world! The time is </span><span class="si">#{</span><span class="n">Time</span><span class="o">.</span><span class="n">local</span><span class="si">}</span><span class="s2">"</span>
<span class="k">end</span>
<span class="n">server</span><span class="o">.</span><span class="n">bind_tcp</span><span class="p">(</span><span class="s2">"0.0.0.0"</span><span class="p">,</span><span class="w"> </span><span class="mi">8080</span><span class="p">)</span>
<span class="nb">puts</span><span class="w"> </span><span class="s2">"Listening on http://0.0.0.0:8080"</span>
<span class="n">server</span><span class="o">.</span><span class="n">listen</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="TCP_echo_server">TCP echo server</h3></div>
<div class="mw-highlight mw-highlight-lang-crystal mw-content-ltr" dir="ltr"><pre><span class="k">require</span><span class="w"> </span><span class="s2">"socket"</span>
<span class="k">def</span><span class="w"> </span><span class="nf">handle_client</span><span class="p">(</span><span class="n">client</span><span class="p">)</span>
<span class="w"> </span><span class="n">message</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="o">.</span><span class="n">gets</span>
<span class="w"> </span><span class="n">client</span><span class="o">.</span><span class="n">puts</span><span class="w"> </span><span class="n">message</span>
<span class="k">end</span>
<span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">TCPServer</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s2">"localhost"</span><span class="p">,</span><span class="w"> </span><span class="mi">1234</span><span class="p">)</span>
<span class="k">while</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server</span><span class="o">.</span><span class="n">accept?</span>
<span class="w"> </span><span class="bp">spawn</span><span class="w"> </span><span class="n">handle_client</span><span class="p">(</span><span class="n">client</span><span class="p">)</span>
<span class="k">end</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Type_inference_and_union_types">Type inference and union types</h3></div>
<p>The following code defines an array containing different types with no usable common ancestor. Crystal automatically creates a union type out of the types of the individual items.
</p>
<div class="mw-highlight mw-highlight-lang-crystal mw-content-ltr" dir="ltr"><pre><span class="n">desired_things</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">[</span><span class="ss">:unicorns</span><span class="p">,</span><span class="w"> </span><span class="s2">"butterflies"</span><span class="p">,</span><span class="w"> </span><span class="mi">1_000_000</span><span class="o">]</span>
<span class="nb">p</span><span class="w"> </span><span class="kp">typeof</span><span class="p">(</span><span class="n">desired_things</span><span class="o">.</span><span class="n">first</span><span class="p">)</span><span class="w"> </span><span class="c1"># typeof returns the compile time type, here (Symbol | String | Int32)</span>
<span class="nb">p</span><span class="w"> </span><span class="n">desired_things</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">class</span><span class="w"> </span><span class="c1"># the class method returns the runtime type, here Symbol</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Concurrency">Concurrency</h3></div>
<p>Channels can be used to communicate between fibers, which are initiated using the keyword <code>spawn</code>.
</p>
<div class="mw-highlight mw-highlight-lang-crystal mw-content-ltr" dir="ltr"><pre><span class="n">channel</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Channel</span><span class="p">(</span><span class="n">Int32</span><span class="p">)</span><span class="o">.</span><span class="n">new</span>
<span class="bp">spawn</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="s2">"Before first send"</span>
<span class="w"> </span><span class="n">channel</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="s2">"Before second send"</span>
<span class="w"> </span><span class="n">channel</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<span class="k">end</span>
<span class="nb">puts</span><span class="w"> </span><span class="s2">"Before first receive"</span>
<span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">channel</span><span class="o">.</span><span class="n">receive</span>
<span class="nb">puts</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="c1"># => 1</span>
<span class="nb">puts</span><span class="w"> </span><span class="s2">"Before second receive"</span>
<span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">channel</span><span class="o">.</span><span class="n">receive</span>
<span class="nb">puts</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="c1"># => 2</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Adoption">Adoption</h2></div>
<p>In 2020, it was reported that the infotainment units in vehicles produced by <a href="Nikola_Corporation" title="Nikola Corporation">Nikola Corporation</a> were written in Crystal.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Much of the backend of the <a href="Kagi_(search_engine)" title="Kagi (search engine)">Kagi search engine</a> is written with Crystal.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239549316">
/* start https://en.wikipedia.org/ */
.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}
/* end https://en.wikipedia.org/ */
</style><div class="refbegin" style="">
<ul><li><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFSt._LaurentBalbaert2019" class="citation cs2">St. Laurent, Simon; Balbaert, Ivo (February 1, 2019), <a rel="nofollow" class="external text" href="https://pragprog.com/book/crystal/programming-crystal"><i>Programming Crystal</i></a> (P1.0 ed.), <a href="Pragmatic_Bookshelf" class="mw-redirect" title="Pragmatic Bookshelf">Pragmatic Bookshelf</a>, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-68050-286-2</bdi></cite></li>
<li><cite id="CITEREFDietrichBernal2022" class="citation cs2">Dietrich, George; Bernal, Guilherme (May 27, 2022), <i>Crystal Programming</i>, <a href="Packt_Publishing" class="mw-redirect" title="Packt Publishing">Packt Publishing</a>, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1801818674</bdi></cite></li>
<li><cite id="CITEREFWartala2016" class="citation cs2 cs1-prop-foreign-lang-source">Wartala, Ramon (March 2016), <a rel="nofollow" class="external text" href="https://www.linux-magazin.de/ausgaben/2016/03/crystal/">"Die Ruby-artige Programmiersprache Crystal"</a> [The Ruby-like programming language Crystal], <i><a href="Linux_Magazine" title="Linux Magazine">Linux Magazin</a></i> (in German), no. 3/2016, <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1432-640X">1432-640X</a></cite></li></ul>
</div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://crystal-lang.org/2014/06/19/crystal-0.1.0-released.html">"Crystal 0.1.0 released!"</a>. <i>crystal-lang</i>. 19 June 2014.</cite></span>
</li>
<li id="cite_note-wikidata-074292ab12fcdf6fa455f20ca57a14e6a4b89731-v20-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-wikidata-074292ab12fcdf6fa455f20ca57a14e6a4b89731-v20_2-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/crystal-lang/crystal/releases/tag/1.16.3">"Release 1.16.3"</a>. 12 May 2025<span class="reference-accessdate">. Retrieved <span class="nowrap">25 May</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-platform-support-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-platform-support_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-platform-support_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">
<cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://crystal-lang.org/reference/platform_support.html">"Crystal Platform Support"</a>. <i>crystal-lang.org</i>.</cite></span>
</li>
<li id="cite_note-go_multithread-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-go_multithread_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-go_multithread_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://forum.crystal-lang.org/t/crystal-multithreading-support/6622/19">"Crystal multithreading support"</a>. 23 February 2024.</cite></span>
</li>
<li id="cite_note-contributors-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-contributors_5-0">^</a></b></span> <span class="reference-text">
<cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/crystal-lang/crystal/graphs/contributors">"Contributors"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">July 25,</span> 2019</span> – via <a href="GitHub" title="GitHub">GitHub</a>.</cite></span>
</li>
<li id="cite_note-rel_0.18.0-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-rel_0.18.0_6-0">^</a></b></span> <span class="reference-text">
<cite id="CITEREFBorenszweig2016" class="citation web cs1">Borenszweig, Ary (June 16, 2016). <a rel="nofollow" class="external text" href="http://crystal-lang.org/2016/06/14/crystal-0.18.0-released.html#comment-2732771703">"Crystal 0.18.0 released!"</a>. <i>crystal-lang.org</i>.</cite></span>
</li>
<li id="cite_note-type-inference-i-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-type-inference-i_7-0">^</a></b></span> <span class="reference-text">
<cite id="CITEREFBrian_J.2013" class="citation web cs1">Brian J., Cardiff (September 9, 2013). <a rel="nofollow" class="external text" href="http://crystal-lang.org/2013/09/23/type-inference-part-1.html">"Type inference part 1"</a>. <i>crystal-lang.org</i>.</cite></span>
</li>
<li id="cite_note-devm-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-devm_8-0">^</a></b></span> <span class="reference-text">
<cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://devm.io/ruby/crystal-ruby-programming">"Programming with Crystal: 'A language for humans and computers'"</a>. <i>devm.io</i>. July 3, 2023.</cite></span>
</li>
<li id="cite_note-story-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-story_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-story_9-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-story_9-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text">
<cite id="CITEREFDavid2016" class="citation web cs1">David, María Inti (April 1, 2016). <a rel="nofollow" class="external text" href="https://manas.tech/blog/2016/04/01/the-story-behind-crystal/">"The story behind #CrystalLang"</a>. <i>manas.tech</i>.</cite></span>
</li>
<li id="cite_note-why_crystal-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-why_crystal_10-0">^</a></b></span> <span class="reference-text">
<cite id="CITEREFHsieh2015" class="citation web cs1">Hsieh, Adler (September 20, 2015). <a rel="nofollow" class="external text" href="https://adlerhsieh.com/p/why-use-crystal-lang">"Why Crystal programming language?"</a>. <i>adlerhsieh.com</i>.</cite></span>
</li>
<li id="cite_note-goodbye_ruby-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-goodbye_ruby_11-0">^</a></b></span> <span class="reference-text">
<cite id="CITEREFBorenszweig2013" class="citation web cs1">Borenszweig, Ary (November 14, 2013). <a rel="nofollow" class="external text" href="https://crystal-lang.org/2013/11/14/good-bye-ruby-thursday.html">"Good bye Ruby Thursday"</a>. <i>crystal-lang.org</i>.</cite></span>
</li>
<li id="cite_note-rel_0.1.0-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-rel_0.1.0_12-0">^</a></b></span> <span class="reference-text">
<cite id="CITEREFBorenszweig2014" class="citation web cs1">Borenszweig, Ary (June 19, 2014). <a rel="nofollow" class="external text" href="https://crystal-lang.org/2014/06/19/crystal-0.1.0-released.html">"Crystal 0.1.0 released!"</a>. <i>crystal-lang.org</i>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFPettinati2020" class="citation web cs1">Pettinati, Martin (11 February 2020). <a rel="nofollow" class="external text" href="https://manas.tech/blog/2020/02/11/nikola-motor-company/">"Nikola Motor Company: Crystal powered dashboards on the trucks of the future | Manas.Tech"</a>. <i>Manas Technology Solutions</i>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=r7t9xPajjTM">"Zac Nowicki – Tales from Kagi | CrystalConf 2023"</a>. 13 November 2023.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="http://crystal-lang.org">Official website</a></span></span></li>
<li><a rel="nofollow" class="external text" href="https://crystal-lang.org/reference/">Documentation</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/crystal-lang">Crystal-lang</a> on <a href="GitHub" title="GitHub">GitHub</a></li>
<li><a rel="nofollow" class="external text" href="https://reddit.com/r/crystal_programming">/r/crystal_programming subreddit</a></li>
<li><a rel="nofollow" class="external text" href="https://crystal-ann.com">Crystal Announcements</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-03" href="https://en.wikipedia.org/wiki/?title=Crystal_(programming_language)&oldid=1283755455">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>